class Watcher {
    constructor(vm, key, cb){
        //vm实例
        this.vm = vm;
        //data中属性名称
        this.key = key;
        //回调函数负责更新视图
        this.cb = cb;

        //把watcher对象记录到Dep类的静态属性targe中。
        Dep.target = this;
        //触发get方法，在get方法中会调用addsub.
        this.oldValue = vm[key];
        //添加完成后继续将targe置为空
        Dep.target = null ;
    }
    //当数据发生变化的时候，更新视图
    update(){
        let newValue = this.vm[this.key];
        if (newValue === this.oldValue) {
            return
        }
        this.cb(newValue);
        this.oldValue = newValue;   //将newValue设置为下一次的oldValue。
    }
}